package servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import beans.Coursebean;
import beans.Teacherbean;
import beans.Userbean;

import dao.Course;
import dao.Teacher;
import dao.TeacherDAO;
import dao.User;

public class LoginServlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    /**
     * The doGet method of the servlet. <br>
     * 
     * This method is called when a form has its tag value method equals to get.
     * 
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
	    throws ServletException, IOException {

	this.doPost(request, response);
    }

    /**
     * The doPost method of the servlet. <br>
     * 
     * This method is called when a form has its tag value method equals to
     * post.
     * 
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
	    throws ServletException, IOException {

	String name = request.getParameter("username").trim();
	String password = request.getParameter("passwd").trim();
	String typeString = request.getParameter("identity").trim();
	if ((name != null && !"".equals(name))
		&& (password != null && !"".equals(password))) {
	    Userbean userbean = new Userbean();
	    User user = userbean.veryfyUser(name, password);
	    if (user != null) {
		int type = Integer.parseInt(typeString);
		if (user.getUsertype() >= type) {
		    request.getSession().setMaxInactiveInterval(14400);
		    request.getSession().setAttribute("user", user);
		    String gradeString = request.getParameter("grade").trim();
		    if (!gradeString.equals("choose")) {
			request.getSession().setAttribute("grade", gradeString);
		    }
		    if (user.getUsertype() == 2 || user.getUsertype() == 3) {
			Teacher teacher = (new Teacherbean())
				.getTeacherById(user.getUserid());
			String courseId = teacher.getCourseid();
			request.getSession().setMaxInactiveInterval(14400);
			Course course = (new Coursebean())
				.getCourseByid(courseId);
			request.getSession().setAttribute("course", course);
		    }
		    if (user.getUsertype() <= 1) {
			response.sendRedirect("../student/student.html");
		    } else if (user.getUsertype() <= 2) {
			response.sendRedirect("../teacher/teacher.html");
		    } else if (user.getUsertype() <= 3) {
			response.sendRedirect("../gradehead/teacher.html");
		    }else if (user.getUsertype() == 4) {
			response.sendRedirect("../admin/admin.html");
		    }
		} else {
		    response.sendRedirect("../login.jsp?error=3");
		}
	    } else {
		response.sendRedirect("../login.jsp?error=1");
	    }
	} else {
	    response.sendRedirect("../login.jsp?error=2");
	}
    }

}
